#ifndef _DATA_H
#define _DATA_H

#include "Types.h"

/* Helpful macros */
#define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0])

/* Math Constants */
#define PI	3.141592654

/* Registers Sizes */
#define MAX_RANDOM_VECTOR	1000000	/* Maximum Random Vector Size generated to txt */
#define REGISTER_CELL_NO	7
#define	STATES_COUNT		64		/* Maximum States ( Rows ) on Viterbi Crate Graph */
#define MAX_FRAME			2000	/* Maximum Bits Number in frame */
#define CODED_FRAME_SIZE	(BitsNo * 2)

/* Functions Prototypes */
float Gauss(
		float mean, 
		float sigma
		);

void Channel(
		float es_n0, 
		long dl_kan, 
		int *wej, 
		float *wyj
		);

void Coder(
		INT32* 	 InputVector,
		INT32*	 Register,
		INT32* 	 CodedVector,
		UINT32	 BitNo
		);

UINT8
ViterbiDecoder(
		FLOAT* ReceivedFrame,
		UINT8*   DecodedVector,
		INT32 BitsNo
		);

#endif
